Operating system platforms have enabled the rapid growth of various technologies that are developed on such systems. Many of these platforms along with running many differing applications for developing the technologies also have become much easier to use when adding components such as hardware devices and associated drivers to the systems. For instance, in one area, some systems allow hardware or software components to be installed on the respective platforms, whereby these components in essence can be plugged into the system with a high degree of confidence that they will also cooperate with the system and other devices/components that have been previously installed. One common name for such technology is referred to as Plug and Play technology which enables devices or components to be easily integrated within an existing system.
Plug and Play technology generally relates to when a computer system automatically recognizes new devices and determines what driver software, resource settings, and so forth the device needs with very little or no interaction from the user. This technology also will typically only load a driver if it is needed since the hardware is currently detected as present. In less sophisticated systems, drivers may always be loaded as a matter of system policy since these systems cannot detect if the hardware is present or not. However, one of the issues with Plug and Play having the ability to detect hardware is that the technology may sometimes store large amounts of data regarding any hardware that has ever been associated with the computer platform, even if that hardware is not currently present. Since all computing devices generally have resource constraints within the platform, the associated Plug and Play data can eventually grow so large that it causes the computer to fail or perform poorly.
In some cases, when hardware is added to an existing platform, the Plug and Play system creates persistent data structures in fixed storage (the registry) that remembers various information and settings for the installed piece of hardware. In addition, more properties and references can be added to these data structures when the Plug and Play system installs a driver to cause the device to operate in the system. A driver is a software component that resides in between the operating system and the hardware and allows the operating system to communicate with the hardware. Thus, when the hardware is removed from the computer without being uninstalled, the Plug and Play system generally will keep these data structures for the respective hardware in fixed storage. Generally, the data structures do not get removed unless a user manually cleans up this data which can be difficult task for even sophisticated users.
It is noted that the act of “removing” a device implies that the computer no longer recognizes the hardware as being present. Thus, removal can have different meanings for different devices. For example, removal for a Universal Serial Bus (USB) implies that the device was unplugged, whereas for a wireless device, removal can imply the device was taken out of range of the computer. Therefore, one reason data structures may be kept in storage is in case the user adds a particular piece of hardware back into their platform in the future. In this manner, the resultant storage of the data structures facilitates that previous settings are not lost and that the user will not have to reinstall the driver to cause proper hardware operations at some point in the future.
One current problem with storing data structures for drivers is that since these data structures may not be removed, they can accumulate over time. There have been cases on larger server machines for example, where these data structures, for hardware that is no longer present, have taken up so much memory that the machines may no longer boot up. In addition, the more data structures that are provided may cause hardware performance to suffer on device specific programming operations.
Removing the device-related data structures at some future point can be important for many reasons. In one case, precious space in the system hive or memory structure is conserved. If the system hive grows too large, for example, then the machine may not boot, or new devices may not be able to be added to the machine. Additionally removing the data structures may also lead to performance improvements in some device operations. Moreover, there are many driver references (e.g., function, class filter, device filter, and so forth) that can be stored with Plug and Play data. By removing unused data, these associated references can also be freed. This can indicate that the drivers and the applications that installed the drivers can be removed since they would no longer be needed.